﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using FM.Events;
using FM.Services;
using FM.矩阵.Common;
using FM.矩阵.接口;
using Microsoft.Practices.Prism.PubSubEvents;
using Microsoft.Practices.Prism.Regions;
using Microsoft.Practices.Unity;
using NJT.IO;

namespace FM.矩阵.控制.Services
{
    public class 系统配置服务1 : 启动基类, I系统配置服务
    {
        public static 系统配置 系统配置1;



        public 系统配置服务1(IUnityContainer 人事部cs, IEventAggregator 新闻部cs, IRegionManager 模块cs)
            : base(人事部cs, 新闻部cs, 模块cs)
        {
        }

        public override void 启动()
        {
            if (Is启动)
            {
                return;
            }
            base.启动();
            新闻部.GetEvent<保存配置Event>().Subscribe(保存配置Action, true);
            读取(true);
        }

        public 系统配置 配置
        {
            get
            {
                读取(false);
                return 系统配置1;

            }
            set { 系统配置1 = value; }
        }

        public 系统配置 读取(bool 读取初始值)
        {
            if (!读取初始值)
            {
                if (系统配置1 != null)
                {
                    return 系统配置1;
                }
            }
            var r = 配置文件.读出<系统配置>(小冰3.配置文件路径);
            系统配置1 = r.Item1 ? r.Item2 : new 系统配置();
            return 系统配置1;
        }

        public bool 写入()
        {
            var 保存结果 = 配置文件.写入(配置, 小冰3.配置文件路径);
            return 保存结果;
        }

        private void 保存配置Action(object obj)
        {
            var win = 小冰3.主窗口;


            写入();
        }

        private void 保存布局Action(object obj)
        {
            var win = 小冰3.主窗口;
            写入();

        }


    }
}
